package com.hyt.it.ogt.kq.service.bm.feign.tps.model;

import com.hyt.core.ModelSerializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.HashMap;

/**
 * @program: it-ogt-bm
 * @description: 微信小程序订阅消息实体
 * @author: Yang HuanKun
 * @create: 2022-01-13 15:24
 **/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "WxMiniAppSubscribeMsg对象", description = "微信小程序订阅消息实体")
public class WxMiniAppSubscribeMsg implements ModelSerializable {

    @ApiModelProperty(value = "接收者（用户）的 openid")
    private String toUser;

    @ApiModelProperty(value = "模板内容")
    private SubTemplateItem data;

    /**
     * 模板内容实体
     * 这里继承HashMap是为了有更好的参数封装能力
     */
    public static class SubTemplateItem extends HashMap<String, Item> {

        public SubTemplateItem() {
        }

        public SubTemplateItem(String key, Item item) {
            super.put(key, item);
        }

        /**
         * 插入模板消息内容项
         *
         * @param key
         * @param value
         * @return
         */
        public SubTemplateItem putItem(String key, String value) {
            super.put(key, new Item(value));
            return this;
        }

        /**
         * 插入模板消息内容项
         *
         * @param key
         * @param item
         * @return
         */
        public SubTemplateItem putItem(String key, Item item) {
            super.put(key, item);
            return this;
        }
    }

    /**
     * 微信小程序推送消息的value中的参数
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    static class Item implements ModelSerializable {

        @ApiModelProperty(value = "模板消息的参数项")
        private Object value;
    }
}
